#!/bin/bash

# 割叶机控制系统 - RK3588端启动脚本
# 用于启动PLC控制客户端

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 日志函数
log_info() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

log_warn() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 打印标题
print_header() {
    echo "======================================================================"
    echo -e "${BLUE}割叶机控制系统 - RK3588端启动脚本${NC}"
    echo "======================================================================"
    echo "服务器: $1:$2"
    echo "======================================================================"
}

# 检查参数
if [ $# -ne 2 ]; then
    log_error "用法: $0 <服务器IP> <服务器端口>"
    log_error "示例: $0 192.168.1.100 9000"
    exit 1
fi

SERVER_IP=$1
SERVER_PORT=$2

print_header $SERVER_IP $SERVER_PORT

# 检查依赖
log_info "检查依赖..."

# 检查Python3
if ! command -v python3 &> /dev/null; then
    log_error "Python3未安装"
    exit 1
fi

# 检查Python模块
log_info "检查Python模块..."
python3 -c "import serial, pymodbus" 2>/dev/null || {
    log_warn "缺少Python模块，正在安装..."
    sudo pip3 install pyserial pymodbus==3.5.2
}

# 检查pymodbus版本兼容性
log_info "检查pymodbus版本..."
python3 -c "
try:
    from pymodbus.client import ModbusSerialClient
    print('使用新版本pymodbus API')
except ImportError:
    try:
        from pymodbus.client.sync import ModbusSerialClient
        print('使用旧版本pymodbus API')
    except ImportError:
        print('pymodbus导入失败，尝试重新安装...')
        exit(1)
" || {
    log_warn "pymodbus版本不兼容，重新安装..."
    sudo pip3 uninstall -y pymodbus
    sudo pip3 install pymodbus==3.5.2
}

# 检查串口设备
log_info "检查硬件设备..."
SERIAL_PORTS=("/dev/ttyS4" "/dev/ttyS1" "/dev/ttyUSB0")
FOUND_PORT=""

for port in "${SERIAL_PORTS[@]}"; do
    if [ -e "$port" ]; then
        FOUND_PORT="$port"
        log_info "找到串口设备: $port"
        break
    fi
done

if [ -z "$FOUND_PORT" ]; then
    log_warn "未找到标准串口设备，将使用默认配置"
fi

# 清理旧进程
log_info "清理旧进程..."
pkill -f "rk3588_client.py" 2>/dev/null || true
sleep 1

# 设置权限
chmod +x rk3588_client.py 2>/dev/null || true

echo "======================================================================"
log_info "启动RK3588客户端..."
echo "======================================================================"

# 启动客户端
python3 rk3588_client.py $SERVER_IP $SERVER_PORT

echo "======================================================================"
log_info "程序已退出"
echo "======================================================================"
